The present invention relates generally to information management among applications and, more particularly, to providing an information bus for allowing interactive applications to distribute data one to another.
Numerous advances have been made recently to simplify the manner in which users interact with computer systems. For example, graphic user interfaces (GUI) have been created to provide visually intuitive means of interacting with a computer. In particular, GUIs such as that available in the Workplace Shell, part of the OS/2(copyright) operating system, commercially available from IBM Corporation, Boca Raton, Fla., enable users to process and store data using graphic metaphors which resemble real life objects. One of the major components of these and other GUIs is the icon, i.e., a small graphical representation of a familiar object, typically implemented with a bit map, which represents an object, data or other resource available on the computer system. The work area or xe2x80x9cdesktopxe2x80x9d of the GUI may contain multiple icons which are easily selected and manipulated by the user with a pointing device i.e., a mouse, pen, touch screen or even speech recognition software. Such interfaces have vastly reduced the level of sophistication and experience necessary for users to interact in a meaningful manner with the computer system and, accordingly, have increased user productivity.
One of the major developments in the field of software design has been the emergence of object-oriented technology. As explained in greater detail hereinafter, object-oriented technology enables the analysis, design and implementation of software systems with intelligent, autonomous agents called objects. Such objects facilitate the design of modular software that more closely mimics the physical or logical entities within the real world.
One of the more recent developments in object-oriented programming is the Java(copyright) programming language developed by Sun Microsystems, Mountainview, Calif. The Java programming language is an object-oriented language, having many elements in common with the C programming language and C++ programming language, with additional modifications. The Java programming language has the benefits of an interpreted language in the performance of compiled code. To enable Java applications to execute on a computer network, a compiler generates an architecture-neutral object file format, i.e. the compiled code is executable on many processors, given the presence of the Java-run time system.
The Java language enables developers to write custom applications called Java applets. When integrated into webpages delivered over the Internet, Java applets allow expert graphics rendering, real-time interaction with users, live information updating and full use of multimedia and instant interaction with servers over a computer network. With the Java programming language, many applications will have better performance because multiple concurrent threads of activity in the applications were supported by the multithreading built into the Java environment.
The Java language and environment, including the JavaBeans specification provide mechanisms for the creation and management of small components whose function represent the building block to use in applications such as web applications. The term component as used in the specification, refers to Java applets as well as to Java Beans.
One method of providing data exchange across components sharing a common bus is known as Dynamic Data Exchange (DDE), found in Windows, marketed by Microsoft. The DDE uses an event-response model, where an interaction depends on the receiving application to understand a specific event and respond with application-specific callbacks. During operation, the communicating applications must be aware of each other and be in actual direct communication with one another. This requires interrupts and protocols to be formed that are time and resource consuming in order to share system information among applications and components.
Notwithstanding the current developments in data communication among applications and components in an object-oriented environment, a need exists for a system in which the semantics of data flow are based on interpreting the contents of data and the names of the data, not on the names or parameters of the events associated with the generation of the data.
In addition, a need exists for a system in which data flow among a plurality of components in a computer system, are capable of exchanging data without the need for a data broker to control the semantics of data flow among components or applications.
The widespread adoption of the Java programming language by the Internet Community creates an opportunity for developers to create a new class of interactive applications. The language and environment specifications provide mechanisms for the creation and management of small reusable feature sets known as Java Beans, whose functions generally represent only a portion of a Web application. However, the specifications do not suggest methods by which these beans should dynamically exchange data.
The disclosed invention interconnects beans by defining a small number of interfaces between cooperating beans, and specifying the protocol for use of those interfaces. In this specification, the fundamental building block for data exchange is the xe2x80x9cdata item.xe2x80x9d The specification details how various forms of information are represented as data items, the lifetime management of these items, and the protocols for querying and extracting information from these items.
The protocols described here are based on the notion of an information bus. That is, all components that implement these interfaces can plug into the information bus. As a member of the bus, any component can exchange information with any other component in a structured way. Generally, the bus is asynchronous and is symmetric in the sense that no component may be considered the master of the bus; however, provision is made in the protocol for a controlling component that can act as the bus master or arbitrator of bus conversations.
In accordance with the present invention, an object oriented computer system having multiple participants is disclosed that utilizes a communications bus for sharing data between the multiple participants. The communications bus comprises membership generator logic, data event builder logic, data notification logic, and data control logic. The membership generator logic is configured to grant each requesting participant membership to the communications bus. The data event builder logic is configured to prepare data events occurring the computer system. The data notification logic is responsive to the data event builder logic and is configured to notify all participant members of the data events generated by the data event builder logic. The data control logic, which is coupled to the data notification logic, is configured to prioritize the notification of data events to the multiple participants of the communications bus. The data event can serve to announce the availability of a new data element, to request a given data element located in one of the member participants, or to announce a changed data element in one of the member participants. The data control logic can be configured to prioritize the notification of data events to selected groups of the multiple participants and it can be configured to provide selected grouping of the multiple participants. In addition, the data control logic may be configured to establish a virtual machine bridge between a first data controller and a first virtual machine and a second data controller and a second virtual machine. In addition, the membership generator logic generates a list of registered applications.
In accordance with another aspect of the present invention, a method is disclosed that distributes data events between multiple applications operating on a computer system. The method comprise the steps of connecting each application to an information bus, registering each application with the information bus, assigning each application to a selected data controller, sending data events over the information bus to each data controller, and forwarding the data events to each application assigned to each data controller. The data event may be a request for a data element found within one of the applications, an announcement of an available data element, or an announcement of a changed data element. The method may further comprise the steps of establishing an order of priority to notify each data controller of the data events and establishing an order of priority to notify each application assigned to each data controller of the data events. An additional step can include establishing a virtual machine bridge between a first data controller in a first virtual machine and a second data controller in a second virtual machine. Moreover, the method may also perform the steps of adding each registered application to a list of members of the information bus and adding each data controller to a list of data control members of the information bus.